const fs = require("fs")
//在函数里面封装对象。只有调用函数才能执行对象。对象一创建这个异步操作就立即执行
function getFileByPath(fpath) {  //2
     var promise = new promise(function(resove,reject){ //排在事件队列等待异步执行结果看是成功还是失败 
         fs.readFile("./package.json","utf-8",function(err,data){//异步具体炒作
                    if (err) {
                        //当异步操作有结果后就开始调用传进来的函数
                        return reject(err);
                    }
                    resove(data);
         })
     })
     return promise  // 3返回一个定义实例对象。后面可以调用then方法传函数参数
}
getFileByPath('./files/1.txt') //1
// 在上一个 .then 中，返回一个新的 promise 实例（在里面再一次调用封装的方法处理异步的时候在then里面在调用一个promise对象函数），因为then有一个返回值，返回值还是一个promise实例，所以可以继续用下一个 .then 来处理
//对象原型上的方法，实例可以调用,传实参复制给形参function(resove,reject)
promise.then(
    function(data){
       console.log(data);//resove(data)
     },
     function(err){
       console.log(err);//reject(err);
     }
)